function pr_sm0 = ksmooth(parm,pr_tt0,pr_tl0)
% PURPOSE: Kim's smoothing for Hamilton() model
% ---------------------------------------------------
% USAGE: [prob1 prob2] = ksmooth(parm,prob1,prob2)
% where: parm = maximum likelihood estimates
%       prob1 = filtered probabilities from hfilter()
%               pr(S_t | y_t)
%       prob2 = filtered probabilities from hfilter()
%               pr(S_t | y_t-1)
% ----------------------------------------------------
% % RETURNS: prob1 = Pr[S_t=0|Y_t], a vector of smoothed probabilities
% ---------------------------------------------------------

% James P. LeSage, Dept of Economics
% Texas State University-San Marcos
% 601 University Drive
% San Marcos, TX 78666
% jlesage@spatial-econometrics.com

if nargin ~= 3
error('ksmooth: Wrong # of input arguments');
end;

n = length(pr_tt0);

ppr = parm(1,1);
qpr = parm(2,1);

pr_tt1 = ones(n,1)-pr_tt0;
pr_tl1 = ones(n,1)-pr_tl0;

pr_sm0 = pr_tt0;
pr_sm1 = pr_tt1;

iter = n-1;
while iter >= 1

% p(S_t, S_t+1 | y_t)
pr_sm00 = pr_sm0(iter+1,1)*qpr*pr_tt0(iter,1);
pr_sm00 = pr_sm00/pr_tl0(iter+1,1);
pr_sm01 = pr_sm1(iter+1,1)*(1-qpr)*pr_tt0(iter,1);
pr_sm01 = pr_sm01/pr_tl1(iter+1,1);
pr_sm10 = pr_sm0(iter+1,1)*(1-ppr)*pr_tt1(iter,1);
pr_sm10 = pr_sm10/pr_tl0(iter+1,1);
pr_sm11 = pr_sm1(iter+1,1)*ppr*pr_tt1(iter,1);
pr_sm11 = pr_sm11/pr_tl1(iter+1,1);

pr_sm0(iter,1) = pr_sm00 + pr_sm01;
pr_sm1(iter,1) = pr_sm10 + pr_sm11;

iter = iter - 1;
end;

